package openbang.common.vo;


import java.util.Date;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;


import com.google.gwt.user.client.rpc.IsSerializable;

/**
 * 数据对象的字段属性
 * 参考java.sql.DatabaseMetaData能提供的属性。
       获取jdbc连接后，由jdbc驱动提供。
       
   注：为了能够容易刷新、重置、备份、迁移等操作,  DataFieldMeta与DataObjMeta的关联,不使用 主键。
      
 * 
 */
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class DataFieldMeta implements IsSerializable {

	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long id;
	
	/**
	 * 所属表
	 */
	@Persistent
	private String schema = ""; 
	@Persistent
	private String objCode = ""; 
	
	@Persistent
	private String code="";
	
	@Persistent
	private String name="";

	@Persistent
	private int dataType= DataTypeEnum.String.getCode();	

	/**
	 * 当 dataType == Object 时,描述 具体的类名: 如 openbang.common.vo.DataBaseMeta
	 */
	@Persistent
	private String dataTypeValue="";

	/**
	 * 当  dataType == Long , 是一个外键。则描述另一个表名  如 openbang.common.vo.DataBaseMeta
	 */
	@Persistent
	private String foreignKeyRef="";
	
	/**
	 * 字符串的 UTF字符集长度,如：一个汉字算一。
	 */
	@Persistent
	private int length = 0;

	@Persistent
	private String defaultValue = "";

	@Persistent
	private String maxValue = "";
	
	@Persistent
	private String minValue = "";

	@Persistent
	private boolean  nullable = true;
	
	@Persistent
	private String remark="";

	@Persistent
	private Integer status=StatusEnum.PENDING_VERIFY.getCode();

	@Persistent
	private Date regTime=new Date();

	
	@Persistent
	private Date updTime=new Date();

    public DataFieldMeta() {
    }


	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}
	
}